#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.basic.module.element.mapper;

import ${package}.common.bean.po.Element;
import ${package}.common.bean.vo.QueryBean;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Description: 无法补充
 *
 * @author wupanhua
 * @date 2019/8/6 15:28
 *
 * <pre>
 *              ${copyright}
 *      Copyright (c) 2019. All Rights Reserved.
 * </pre>
 */
@Repository
public interface ElementMapper {

    /**
     * Description:
     * <根据菜单主键获取页面元素>
     * @author wupanhua
     * @date 16:23 2019/8/6
     * @param menuKey 1
     * @return java.util.List<Element>
     **/
    List<Element> queryElementByMenuKey(Long menuKey);

    /**
     * Description:
     * <根据主键获取页面权限>
     * @author wupanhua
     * @date 16:23 2019/8/6
     * @param key 1
     * @return Element
     **/
    Element queryElementByElementKey(Long key);

    /**
     * Description:
     * <查询页面元素列表>
     * @author pig
     * @date 16:24 2019/8/6
     * @param queryBean 1
     * @return java.util.List<Element>
     **/
    List<Element> queryElementByLimit(QueryBean queryBean);

    /**
     * Description:
     * <新增页面元素>
     * @author pig
     * @date 16:25 2019/8/6
     * @param element 1
     **/
    void addElement(Element element);

    /**
     * Description:
     * <根据主键修改页面元素>
     * @author pig
     * @date 16:26 2019/8/6
     * @param element 1
     **/
    void updateElementByKey(Element element);

    /**
     * Description:
     * <根据主键查询页面元素信息>
     * @author pig
     * @date 16:26 2019/8/6
     * @param key 1
     * @return Element
     **/
    Element queryElementByKey(Long key);

    /**
     * Description:
     * <根据主键删除页面元素>
     * @author pig
     * @date 16:26 2019/8/6
     * @param key 1
     **/
    void deleteElementByKey(Long key);

    /**
     * Description:
     * <批量将页面元素状态置为删除>
     * @author pig
     * @date 16:27 2019/8/6
     * @param free 1
     **/
    void updateElementsStatusDeleteBykeys(List<Long> free);

    /**
     * Description:
     * <批量查询页面元素数据>
     * @author pig
     * @date 16:27 2019/8/6
     * @param occupied 1
     * @return java.util.List<Element>
     **/
    List<Element> findElementsByKeys(List<Long> occupied);

    /**
     * Description:
     * <启用/禁用>
     * @author pig
     * @date 16:27 2019/8/6
     * @param element 1
     **/
    void updateElementDisableOrEnable(Element element);

    /**
     * Description:
     * <根据编码查询元素>
     * @author pig
     * @date 16:28 2019/8/6
     * @param code 1
     * @return java.util.List<Element>
     **/
    List<Element> findElementsByCode(String code);

    /**
     * Description:
     * <根据名称查询元素>
     * @author pig
     * @date 16:28 2019/8/6
     * @param name 1
     * @return Element
     **/
    Element findElementsByName(String name);

    /**
     * Description:
     * <根据编码查询元素 筛除传入id的数据>
     * @author pig
     * @date 16:28 2019/8/6
     * @param element 1
     * @return java.util.List<Element>
     **/
    List<Element> findElementsByCodeOrNotInId(Element element);

    /**
     * Description:
     * <根据名称查询元素 筛除传入id的数据>
     * @author pig
     * @date 16:29 2019/8/6
     * @param element 1
     * @return Element
     **/
    Element findElementsByNameOrNotInId(Element element);
}
